#include <QApplication>
#include <QTextEdit>
#include <QTimer>
#include <QScrollBar>


int main(int argc, char *argv[]) {
    QApplication app(argc, argv);

    QTextEdit textEdit;
    textEdit.setReadOnly(true);
    textEdit.setWindowTitle("循环显示一行字符");

    // 设置字体和字号
    QFont font("Monospace");
    font.setPointSize(12);
    textEdit.setFont(font);

    // 初始化计数器和文本内容
    int counter = 0;
    QString textContent;

    // 定时器，每隔一定时间更新一次文本内容
    QTimer timer;
    timer.setInterval(100); // 设置更新间隔时间，单位为毫秒
    QObject::connect(&timer, &QTimer::timeout, [&]() {
        // 生成一行字符
        QString line = QString("这是第 %1 行\n").arg(counter);

        // 超过1024行时，删除第一行
        if (counter >= 1024) {
            int pos = textContent.indexOf('\n');
            textContent.remove(0, pos + 1);
        }

        // 添加新行
        textContent += line;

        textEdit.setPlainText(textContent);
        textEdit.verticalScrollBar()->setValue(textEdit.verticalScrollBar()->maximum()); // 始终滚动到最底部

        ++counter;
    });

    timer.start();

    textEdit.show();

    return app.exec();
}
